# 1.1 用户账户余额（可自定义初始金额）
money = 20.0
# 1.2 商场商品列表（格式：(商品名, 单价)，可扩展更多商品）
goods_list = [
    ("苹果", 8.9),
    ("牛奶", 5.5),
    ("面包", 3.2),
    ("薯片", 6.8),
    ("可乐", 2.5)
]
# 1.3 空购物车（存储选中的商品：(商品名, 单价, 购买数量)）
cart = []


# ---------------------- 2. 辅助函数：显示商品列表 ----------------------
def show_goods():
    print("\n" + "=" * 40)
    print("【商场商品列表】")
    print(f"{'序号':<5} {'商品名':<10} {'单价(元)':<10}")
    print("-" * 40)
    for i, (name, price) in enumerate(goods_list, 1):  # 序号从1开始
        print(f"{i:<5} {name:<10} {price:<10.2f}")
    print("=" * 40)
    print(f"当前账户余额：{money:.2f} 元")
    print("提示：输入商品名（如“苹果”）添加到购物车，输入 Q/q 退出并打印购物小条\n")


# ---------------------- 3. 购中：核心购物逻辑 ----------------------
print("欢迎光临！请先查看商品列表～")
while True:
    # 显示商品列表，引导用户操作
    show_goods()
    # 获取用户输入
    user_input = input("请输入商品名或 Q/q 退出：").strip()  # strip() 去除输入前后空格

    # 3.1 购后：用户输入Q/q，退出并打印购物小条
    if user_input.upper() == "Q":
        break

    # 3.2 购中：检查商品是否存在
    goods_exist = False  # 标记商品是否存在
    for goods_name, goods_price in goods_list:
        if user_input == goods_name:
            goods_exist = True
            # 3.3 检查余额是否足够
            if money >= goods_price:
                # 3.4 处理重复购买（同一商品只存一条，更新数量）
                cart_has_goods = False  # 标记购物车是否已有该商品
                for i, (cart_name, cart_price, cart_num) in enumerate(cart):
                    if cart_name == goods_name:
                        cart_has_goods = True
                        cart[i] = (cart_name, cart_price, cart_num + 1)  # 更新数量
                        break
                # 3.5 购物车没有该商品，新增一条记录
                if not cart_has_goods:
                    cart.append((goods_name, goods_price, 1))

                # 3.6 扣减余额，提示成功
                money -= goods_price
                print(f"✅ 恭喜！{goods_name} 购买成功！当前余额：{money:.2f} 元\n")
            else:
                # 余额不足提示
                print(f"❌ 穷鬼，{goods_name} 单价 {goods_price:.2f} 元，你余额只有 {money:.2f} 元！请到其他超市购买！\n")
            break  # 找到商品后，退出商品遍历循环

    # 3.7 商品不存在提示
    if not goods_exist:
        print(f"❌ 没有「{user_input}」这个商品，别瞎弄！\n")

# ---------------------- 4. 购后：打印购物小条 ----------------------
print("\n" + "=" * 50)
print("【购物小条】")
print("=" * 50)
if not cart:  # 购物车为空
    print("😢 您未购买任何商品，欢迎下次光临！")
else:
    # 打印购物车商品明细
    print(f"{'商品名':<10} {'单价(元)':<10} {'数量':<5} {'小计(元)':<10}")
    print("-" * 50)
    total_cost = 0  # 总花费
    for name, price, num in cart:
        subtotal = price * num  # 单种商品小计
        total_cost += subtotal
        print(f"{name:<10} {price:<10.2f} {num:<5} {subtotal:<10.2f}")
    print("-" * 50)
    print(f"{'总花费':<25} {total_cost:.2f} 元")
    print(f"{'账户余额':<25} {money:.2f} 元")
    print("=" * 50)
    print("感谢惠顾，欢迎下次光临！")